
package GUI;

import java.awt.*;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.*;

public class ChessGUI extends JFrame implements ActionListener{
    
    Container contenedor;
    JMenu nivel,juego,acerca;
    JMenuItem nuevo,salir,desarrolladores,ayuda;
    JMenuBar barra;
    ChessCanvas tablero;
    JRadioButtonMenuItem amateur,principiante;
    JButton iniciar;
    JScrollPane scroll;
    JTextArea log;
    JPanel pTablero,pIzq,pLetrasN,pNumIz,pLetrasS,pNumDer,pDer;
    JLabel a,b,c,d,e,f,a1,b1,c1,d1,e1,f1;
    ButtonGroup groupDif;
    
    public ChessGUI(){
        super("Chess Trainer");
        contenedor = getContentPane();
        contenedor.setLayout(new FlowLayout());
        
        barra = new JMenuBar();
        
        tablero = new ChessCanvas();
        
        juego = new JMenu("Juego");
        acerca = new JMenu("Acerca de");
        
        log = tablero.getRegistro();
        
        iniciar = new JButton("Iniciar Partida");
        iniciar.addActionListener(this);
        iniciar.setEnabled(false);
        
        scroll=new JScrollPane(log);
        scroll.setPreferredSize(new Dimension(150,250));
        
        pLetrasN = new JPanel(new GridLayout(1,6));
        a = new JLabel("a");
        a.setHorizontalAlignment(SwingConstants.CENTER);
        b = new JLabel("b");
        b.setHorizontalAlignment(SwingConstants.CENTER);
        c = new JLabel("c");
        c.setHorizontalAlignment(SwingConstants.CENTER);
        d = new JLabel("d");
        d.setHorizontalAlignment(SwingConstants.CENTER);
        e = new JLabel("e");
        e.setHorizontalAlignment(SwingConstants.CENTER);
        f = new JLabel("f");
        f.setHorizontalAlignment(SwingConstants.CENTER);
        pLetrasN.add(a);
        pLetrasN.add(b);
        pLetrasN.add(c);
        pLetrasN.add(d);
        pLetrasN.add(e);
        pLetrasN.add(f);
        
        pLetrasS = new JPanel(new GridLayout(1,6));
        a1 = new JLabel("a");
        a1.setHorizontalAlignment(SwingConstants.CENTER);
        b1 = new JLabel("b");
        b1.setHorizontalAlignment(SwingConstants.CENTER);
        c1 = new JLabel("c");
        c1.setHorizontalAlignment(SwingConstants.CENTER);
        d1 = new JLabel("d");
        d1.setHorizontalAlignment(SwingConstants.CENTER);
        e1 = new JLabel("e");
        e1.setHorizontalAlignment(SwingConstants.CENTER);
        f1 = new JLabel("f");
        f1.setHorizontalAlignment(SwingConstants.CENTER);
        pLetrasS.add(a1);
        pLetrasS.add(b1);
        pLetrasS.add(c1);
        pLetrasS.add(d1);
        pLetrasS.add(e1);
        pLetrasS.add(f1);
        
        pNumIz = new JPanel(new GridLayout(6,1));
        pNumIz.add(new JLabel("6"));
        pNumIz.add(new JLabel("5"));
        pNumIz.add(new JLabel("4"));
        pNumIz.add(new JLabel("3"));
        pNumIz.add(new JLabel("2"));
        pNumIz.add(new JLabel("1"));
        
        pNumDer = new JPanel(new GridLayout(6,1));
        pNumDer.add(new JLabel("6"));
        pNumDer.add(new JLabel("5"));
        pNumDer.add(new JLabel("4"));
        pNumDer.add(new JLabel("3"));
        pNumDer.add(new JLabel("2"));
        pNumDer.add(new JLabel("1"));
        
        pIzq = new JPanel(new BorderLayout());
        pTablero = new JPanel(new BorderLayout());
        pTablero.setPreferredSize(new Dimension(420,420));
        pTablero.setBackground(Color.WHITE);
        
        pDer = new JPanel(new FlowLayout());
        pDer.setPreferredSize(new Dimension(150,300));
        pDer.add(scroll);
        pDer.add(iniciar);
        
        nivel = new JMenu("Nivel");
        
        groupDif = new ButtonGroup();
        
        nuevo = new JMenuItem("Nueva Partida");
        nuevo.addActionListener(this);
        amateur = new JRadioButtonMenuItem("Amateur");
        amateur.setSelected(true);
        amateur.addActionListener(this);
        groupDif.add(amateur);
        nivel.add(amateur);
        principiante = new JRadioButtonMenuItem("Principiante");
        principiante.addActionListener(this);
        groupDif.add(principiante);
        nivel.add(principiante);
        salir = new JMenuItem("Salir");
        salir.addActionListener(this);
        desarrolladores = new JMenuItem("Desarrolladores");
        desarrolladores.addActionListener(this);
        ayuda = new JMenuItem("Ayuda");
        ayuda.addActionListener(this);
        
        
        
        juego.add(nuevo);
        juego.add(nivel);
        juego.add(salir);
        
        acerca.add(desarrolladores);
        acerca.add(ayuda);
        
        barra.add(juego);
        barra.add(acerca);
        
        
        pTablero.add(tablero,BorderLayout.CENTER);
        pIzq.add(pLetrasN,BorderLayout.NORTH);
        pIzq.add(pNumIz,BorderLayout.WEST);
        pIzq.add(pLetrasS,BorderLayout.SOUTH);
        pIzq.add(pNumDer,BorderLayout.EAST);
        pIzq.add(pTablero,BorderLayout.CENTER);
        
        contenedor.add(pIzq);
        contenedor.add(pDer);
        
        setJMenuBar(barra);
        pack();
        setVisible(true);
        setLocationRelativeTo(null);
        setResizable(false);
    }
    
    public static void main(String args[]) {

	 JFrame.setDefaultLookAndFeelDecorated(true);
	 SwingUtilities.invokeLater(new Runnable() {

            @Override
	     public void run() {
		  try {
		      //UIManager.setLookAndFeel("org.pushingpixels.substance.api.skin.SubstanceSaharaLookAndFeel");
		      UIManager.setLookAndFeel("org.pushingpixels.substance.api.skin.SubstanceRavenLookAndFeel");
		  } catch (Exception e) {
		      System.out.println("Look and Feel failed to initialize");
		  }
		  ChessGUI g = new ChessGUI();
		  g.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	     }
	 });

    }
    
    @Override
    public void actionPerformed(ActionEvent e) {
        
        if(e.getSource()==nuevo){
//            tablero.iniciar();
            tablero.nuevoJuego();
            amateur.setSelected(true);
            iniciar.setEnabled(true);
        }
        
        if(e.getSource()==iniciar){
            if(amateur.isSelected()){
                tablero.setProfundidad(2);
            }
            if(principiante.isSelected()){
                tablero.setProfundidad(4);
            }
            nivel.setEnabled(false);
            tablero.juegaBlancas();
            iniciar.setEnabled(false);
        }
    }
}
